مشخصات مقاله
-
1215
-
0.0
-
2815
-
0
-
0
آموزش Java – ThreadGroup در پردازش موازی در Java
آموزش Java – ThreadGroup در پردازش موازی در Java
Java به توسعه دهنده این امکان را می دهد تا چندین thread را در یک آّبجکت واحد بگنجاند. از این طریق می توان به راحتی گروهی از thread ها را با فراخوانی تنها یک تابع معلق (suspend()) کرد، از سر گرفت (resume()) یا متوقف (interrupt()) نمود.
متدهای suspend()، resume() و stop() اکنون منسوخ می باشند.
برای ایجاد آبجکت thread group باید کلاس java.lang.ThreadGroup را پیاده سازی کرد.
توابع سازنده ی (Constructor) کلاس ThreadGroup
کلاس ThreadGroup دو تابع سازنده به شرح زیر دارد:
متدهای پرکاربرد کلاس ThreadGroup
کلاس ThreadGroup تعداد زیادی متد دارد. در زیر لیستی از پرکاربردترین آن ها همراه با شرح هر یک ارائه شده است:
در زیر نحوه ی قرار دادن چند thread در یک آبجکت واحد (thread group ای به نام tg1) را مشاهده می کنید.
ThreadGroup tg1 = new ThreadGroup("Group A");
Thread t1 = new Thread(tg1,new MyRunnable(),"one");
Thread t2 = new Thread(tg1,new MyRunnable(),"two");
Thread t3 = new Thread(tg1,new MyRunnable(),"three");
همان طور که مشاهده می کنید، هر سه thread عضو یک thread group می باشند. در اینجا tg1 اسم آبجکت thread group میزبان بوده، MyRunnable کلاسی است که اینترفیس Runnable را پیاده سازی می کند و پارامترهای "one"، "two" و "three" اسم thread های ایجاد شده می باشد.
حال می توان با یک خط کد هر سه thread نام برده را متوقف نمود.
Thread.currentThread().getThreadGroup().interrupt();
مثال کاربردی از پیاده سازی ThreadGroup و گروه بندی thread ها
فایل: ThreadGroupDemo.java
public class ThreadGroupDemo implements Runnable{
public void run() {
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] args) {
ThreadGroupDemo runnable = new ThreadGroupDemo();
ThreadGroup tg1 = new ThreadGroup("Parent ThreadGroup");
Thread t1 = new Thread(tg1, runnable,"one");
t1.start();
Thread t2 = new Thread(tg1, runnable,"two");
t2.start();
Thread t3 = new Thread(tg1, runnable,"three");
t3.start();
System.out.println("Thread Group Name: "+tg1.getName());
tg1.list();
}
}
خروجی:
one two three Thread Group Name: Parent ThreadGroup java.lang.ThreadGroup[name=Parent ThreadGroup,maxpri=10] Thread[one,5,Parent ThreadGroup] Thread[two,5,Parent ThreadGroup] Thread[three,5,Parent ThreadGroup]